package leetcode.hot100;

@SuppressWarnings("all")
public class _240_搜索二维矩阵II {

    /**
     * 编写一个高效的算法来搜索矩阵 matrix 中的一个目标值 target
     * 该矩阵具有以下特性：
     * 每行的元素从左到右升序排列
     * 每列的元素从上到下升序排列
     */
    public boolean searchMatrix(int[][] matrix, int target) {
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false;
        int row = 0;
        int col = matrix[0].length - 1;
        while (row < matrix.length && col >= 0) {
            // 从矩阵的右上角开始查找，如果等于目标值就返回
            // 如果小于就往下一行找，如果大于就往左边的列找
            int begin = matrix[row][col];
            if (begin == target) return true;
            if (begin < target) {
                row++;
            } else {
                col--;
            }
        }
        return false;
    }

}

